package com.dwy2002.order.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dwy2002.common.Result;
import com.dwy2002.pojo.dto.order.OrderDTO;
import com.dwy2002.pojo.dto.order.OrderUpdateDTO;
import com.dwy2002.pojo.dto.order.OrdersPageDTO;
import com.dwy2002.pojo.po.order.Orders;
import com.dwy2002.pojo.vo.order.OrderVO;

import java.util.List;

/**
 * @author 杜伟毅
 * @version 1.0
 * @since 2025/03/06
 */
public interface IOrdersService extends IService<Orders> {

    /**
     * 生成订单
     *
     * @param dto 前端传的订单信息
     * @author 杜伟毅
     * @since 2025/3/7 0007 23:09
     */
    Result<Void> generateOrder(OrderDTO dto);

    /**
     * 删除订单
     *
     * @param ids 订单id集合
     * @author 杜伟毅
     * @since 2025/3/8 0008 22:27
     */
    Result<Void> deleteOrder(List<String> ids);

    /**
     * 订单分页查询
     *
     * @param dto 订单分页数据DTO
     * @author 杜伟毅
     * @since 2025/3/9 0009 14:47
     */
    Result<Page<Orders>> getOrdersPage(OrdersPageDTO dto);

    /**
     * 有限制的修改订单
     *
     * @param dto 修改订单DTO
     * @author 杜伟毅
     * @since 2025/3/8 0008 23:01
     */
    Result<Void> updateOrder(OrderUpdateDTO dto);

    /**
     * 获取订单详情
     *
     * @param id 订单id
     * @author 杜伟毅
     * @since 2025/3/11 0011 18:12
     */
    Result<OrderVO> getOrderDetails(String id);

    /**
     * 完成订单
     *
     * @param id 订单id
     * @author 杜伟毅
     * @since 2025/3/15 0015 23:17
     */
    Result<Void> accomplishOrder(String id);

    /**
     * 完成订单(定时任务)
     *
     * @author 杜伟毅
     * @since 2025/3/15 0015 23:18
     */
    void batchAccomplishOrder();
}
